package com.rpinfo.editalog.config;

import com.rpinfo.editalog.util.Util;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

/**
 *
 * @author camilo
 */
public class CfgPropUtil implements CfgProp {

  @Override
  public Cfg getCfgProp() {
    try {
      Cfg cfg = new Cfg();
      Properties prop = new Properties();
      InputStream in = new FileInputStream(System.getProperty("user.home") + "/cfg_ajlog.properties");
//      InputStream in = this.getClass().getResourceAsStream("cfg.properties");
      prop.load(in);

      cfg.setDialect(Cfg.POSTGRESQL_DIALECT);
      cfg.setDriver(Cfg.POSTGRESQL_DRIVER);
      cfg.setUrl(Cfg.POSTGRESQL_URL);
      cfg.setIp(prop.getProperty("bd.ip"));
      cfg.setPorta(prop.getProperty("bd.porta"));
      cfg.setNomeBd(prop.getProperty("bd.nomebd"));
      cfg.setUser(prop.getProperty("bd.user"));
      cfg.setPassword(prop.getProperty("bd.password"));
      cfg.setCaminhoLog(prop.getProperty("caminho.log"));

      return cfg;
    } catch (IOException e) {
      Util.msgErro(e, "Erro na leitura do arquivo de configurações.");
      return null;
    }
  }

  @Override
  public void setCfgProp(Cfg cfg) {
    Properties prop = new Properties();
//    definindo os valores para as keys do arquivo properties
    prop.setProperty("bd.ip", cfg.getIp());
    prop.setProperty("bd.porta", cfg.getPorta());
    prop.setProperty("bd.nomebd", cfg.getNomeBd());
    prop.setProperty("bd.user", cfg.getUser());
    prop.setProperty("bd.password", cfg.getPassword());
    prop.setProperty("caminho.log", cfg.getCaminhoLog());

    try {
//      Cria uma instância do arquivo properties
      File file = new File(System.getProperty("user.home") + "/cfg_ajlog.properties");
      try (FileOutputStream fos = new FileOutputStream(file)) {
        prop.store(fos, null);
      }
    } catch (IOException e) {
      Util.msgErro(e, "Erro na gravação das configurações.");
    }
  }
}
